package edu.algo3.algoThief.domain;

import java.util.List;

public class Caso {

    private Integer gradoDeDificultad;

    private Ladron ladron;

    public Caso(Integer dificultad) {

        this.gradoDeDificultad = dificultad;
        this.ladron = this.definirLadron(dificultad);
    }

    public Caso(Integer dificultad, String nombreJugador) {

        this.gradoDeDificultad = dificultad;
        this.ladron = this.definirLadron(dificultad, nombreJugador);
    }

    public Ladron definirLadron(Integer dificultad) {

        return new Ladron(dificultad);
    }

    public Ladron definirLadron(Integer dificultad, String nombreJugador) {

        return new Ladron(dificultad, nombreJugador);
    }

    public Ciudad getSiguienteCiudadDeEscape() {

        List<Ciudad> ciudadesDeEscape =
            this.ladron.getRutaDeEscape().getCiudadesDeEscape();
        for (Ciudad ciudad : ciudadesDeEscape) {
            if (!ciudad.estaVisitada()) {
                return ciudad;
            }
        }
        return null;
    }

    public boolean todasLasCiudadesVisitadas() {

        List<Ciudad> ciudadesDeEscape =
            this.ladron.getRutaDeEscape().getCiudadesDeEscape();
        for (Ciudad ciudad : ciudadesDeEscape) {
            if (!ciudad.estaVisitada()) {
                return Boolean.FALSE;
            }
        }
        return Boolean.TRUE;
    }

    public Ciudad getUltimaCiudadDeEscape() {

        List<Ciudad> ciudadesDeEscape =
            this.ladron.getRutaDeEscape().getCiudadesDeEscape();
        return ciudadesDeEscape.get(ciudadesDeEscape.size() - 1); // Devuelve la ultima ciudad de
                                                                  // escape
    }

    // getters

    public Integer getGradoDeDificultad() {

        return gradoDeDificultad;
    }

    public Ladron getLadron() {

        return ladron;
    }

}
